#ifndef VDATA_H
#define VDATA_H

//////////////////////////////////////////////////////////////////////////
// VAbstractData
class VAbstractData: public QObject
{
	Q_OBJECT
	Q_PROPERTY(QVariant value READ value WRITE setValue)
public:
	VAbstractData(QObject *parent=0);

public:
	QVariant value() const;
	void setValue(const QVariant& value);

private:
	QVariant m_value;
};
//QML_DECLARE_TYPE(VAbstractData);

//////////////////////////////////////////////////////////////////////////
// VTime
class VTime: public VAbstractData
{
	Q_OBJECT
	
public:
	VTime(QObject* parent=0);

public:
	virtual QString serialize() const;
};
//QML_DECLARE_TYPE(VTime);

//////////////////////////////////////////////////////////////////////////
// VDate
class VDate: public VAbstractData
{
	Q_OBJECT
public:
	VDate(QObject* parent=0);

public:
	virtual QString serialize() const;
};
//QML_DECLARE_TYPE(VDate);

//////////////////////////////////////////////////////////////////////////
// VString
class VString: public VAbstractData
{
	Q_OBJECT
public:
	VString(QObject* parent=0);

public:
	virtual QString serialize() const;
};
//QML_DECLARE_TYPE(VString);

//////////////////////////////////////////////////////////////////////////
// VInteger
class VInteger: public VAbstractData
{
	Q_OBJECT
public:
	VInteger(QObject* parent=0);

public:
	virtual QString serialize() const;
};
//QML_DECLARE_TYPE(VInteger);

//////////////////////////////////////////////////////////////////////////
// VReal
class VReal: public VAbstractData
{
	Q_OBJECT
public:
	VReal(QObject* parent=0);

public:
	virtual QString serialize() const;
};
//QML_DECLARE_TYPE(VReal);

#endif // VDATA_H
